﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Inmobiliaria.Services.Core.DTO;
using System.Data.SqlClient;
using System.Data;
using System.IO;
using MySql.Data.MySqlClient;
namespace Inmobiliaria.Data
{
    public class DaoRegistroInmobiliaria
    {
        MySql.Data.MySqlClient.MySqlConnection connection = new MySqlConnection(System.Configuration.ConfigurationManager.ConnectionStrings["INMOBILIARIA"].ConnectionString);
        public static int idInmobiliaria;
        public int BuscarInmobiliariaExistente(DtoInmobiliaria dtoInmobiliaria)
        {
            int inmobiliaria;
            DataTable dt = new DataTable();
            connection.Open();
            MySqlParameter[] oParam = {
                                      new MySqlParameter("NombreInmobiliaria_in", dtoInmobiliaria.NombreInmobiliaria),
                                      new MySqlParameter("Provincia_in", dtoInmobiliaria.Provincia),
                                      new MySqlParameter("Localidad_in", dtoInmobiliaria.Localidad),
                                      new MySqlParameter("Direccion_in", dtoInmobiliaria.Calle),
                                      new MySqlParameter("Altura_in", dtoInmobiliaria.Altura)};

            string proceso = "ConsultaInmobiliariaExistente";
            MySqlDataAdapter da = new MySqlDataAdapter(proceso, connection);
            da.SelectCommand.CommandType = CommandType.StoredProcedure;
            da.SelectCommand.Parameters.AddRange(oParam);
            da.Fill(dt);
            if (dt.Rows.Count > 0)
            {
                inmobiliaria = 1;
                return inmobiliaria;
            }
            else
            {
                inmobiliaria = 0;
                return inmobiliaria;
            }
        }
        public string BuscarInmobiliariaporCodigo(string CodigoInmobiliaria)
        {
            connection.Open();
            MySqlCommand cmd = new MySqlCommand();
            cmd.Connection = connection;
            cmd.CommandText = "SELECT (txNombreInmobiliaria) FROM tinmobiliarias  where (idInmobiliaria) = '" + CodigoInmobiliaria + "'";
            string nombre = (string)cmd.ExecuteScalar();
            connection.Close();
            return nombre;
        }
        public void GuardarInmobiliaria(DtoInmobiliaria inmobiliaria)
        {
            connection.Open();
            string proceso = "GuardarInmobiliarias";
            MySqlCommand cmd = new MySqlCommand(proceso, connection);
            cmd.CommandType = CommandType.StoredProcedure;
            cmd.Parameters.AddWithValue("NombreInmobiliaria_in", inmobiliaria.NombreInmobiliaria);
            cmd.Parameters.AddWithValue("Provincia_in", inmobiliaria.Provincia);
            cmd.Parameters.AddWithValue("Localidad_in", inmobiliaria.Localidad);
            cmd.Parameters.AddWithValue("Calle_in", inmobiliaria.Calle);
            cmd.Parameters.AddWithValue("Altura_in", inmobiliaria.Altura);
            cmd.Parameters.AddWithValue("CodTelefono_in", inmobiliaria.CodTelefono);
            cmd.Parameters.AddWithValue("Telefono_in", inmobiliaria.Telefono);
            cmd.Parameters.AddWithValue("CodCelular_in", inmobiliaria.CodCelular);
            cmd.Parameters.AddWithValue("Celular_in", inmobiliaria.Celular);
            cmd.Parameters.AddWithValue("CodTelefono2_in", inmobiliaria.CodTelefono2);
            cmd.Parameters.AddWithValue("Telefono2_in", inmobiliaria.Telefono2);
            cmd.Parameters.AddWithValue("CodCelular2_in", inmobiliaria.CodCelular2);
            cmd.Parameters.AddWithValue("Celular2_in", inmobiliaria.Celular2);
            cmd.Parameters.AddWithValue("Email_in", inmobiliaria.Email);
            cmd.Parameters.AddWithValue("Facebook_in", inmobiliaria.Facebook);
            cmd.Parameters.AddWithValue("SitioWeb_in", inmobiliaria.SitioWeb);
            cmd.ExecuteNonQuery();
            connection.Close();
            BuscarinmobiliariaID(inmobiliaria);
           // GuardarImagenes(idInmobiliaria, inmobiliaria);

        }
        //private void GuardarImagenes(int idInmobiliaria, DtoInmobiliaria inmobiliaria)
        //{
        //    try
        //    {
        //        connection.Open();
        //        if (inmobiliaria.FotoInmobiliaria != null)
        //        {
        //            MySqlCommand InsertarImagenes1 = new MySqlCommand("INSERT INTO inmobiliaria.timagenesinmobiliarias(Imagen, idInmobiliaria)" + "VALUES ( ?image,  ?id)", connection);

        //            InsertarImagenes1.Parameters.Add("?image", MySqlDbType.Blob).Value = inmobiliaria.FotoInmobiliaria;
        //            InsertarImagenes1.Parameters.Add("?id", MySqlDbType.Int64).Value = idInmobiliaria;
        //            InsertarImagenes1.ExecuteNonQuery();
        //        }
        //        connection.Close();
        //    }
        //    catch (Exception ex)
        //    { }
        //}
        public int BuscarinmobiliariaID(DtoInmobiliaria inmobiliaria)
        {
            connection.Open();
            MySqlCommand cmd = new MySqlCommand();
            cmd.Connection = connection;
            cmd.CommandText = "select MAX(idInmobiliaria) From tinmobiliarias where (txNombreInmobiliaria) = '" + inmobiliaria.NombreInmobiliaria + "' and (idProvincia) = '" + inmobiliaria.Provincia + "' and (idLocalidad) = '" + inmobiliaria.Localidad + "'";
            Int32 inmo = (Int32)cmd.ExecuteScalar();
            connection.Close();
            idInmobiliaria = inmo;
            return inmo;
        }
        public string BuscarEmail(DtoInmuebleInmobiliaria inmueble)
        {
            //string email1 = Inmueble.Email;
            //string email2 = Inmueble.Email2;
            //int inmobiliaria = idInmobiliaria;
            connection.Open();
            MySqlCommand cmd = new MySqlCommand();
            cmd.Connection = connection;
            cmd.CommandText = "SELECT (txEmail) FROM tinmobiliarias  where (idInmobiliaria) = '" + inmueble.Codigo + "'";
            string em1 = (string)cmd.ExecuteScalar();
            connection.Close();
            return em1;
        }
        public void GuardarInmueble(DtoInmuebleInmobiliaria Inmueble)
        {
            int tipoinmueble = Inmueble.TipoInmueble;
            string transaccion = Inmueble.Transaccion;
            int provincia = Inmueble.Provincia;
            int localidad = Inmueble.Localidad;
            int barrio = Inmueble.Barrio;
            string calle = Inmueble.Calle;
            string altura = Inmueble.Altura;
            string lote = Inmueble.Lote;
            string superficieCubierta = Inmueble.SuperficieCubierta;
            string habitaciones = Inmueble.Habitaciones;
            string baño = Inmueble.Baños;
            string agua = Inmueble.Agua;
            string asfalto = Inmueble.Asfalto;
            string balcon = Inmueble.Balcon;
            string clocas = Inmueble.Cloacas;
            string cocina = Inmueble.Cocina;
            string comedor = Inmueble.Comedor;
            string descripcion = Inmueble.Descripcion;
            string gas = Inmueble.Gas;
            string jardin = Inmueble.Jardin;
            string living = Inmueble.Living;
            string luz = Inmueble.Luz;
            string patio = Inmueble.Patio;
            string quincho = Inmueble.Quincho;
            string telefonoInmueble = Inmueble.TelefonoInmueble;
            string terraza = Inmueble.Terraza;
            string valorInmueble = Inmueble.ValorInmueble;
            string tipoMoneda = Inmueble.TipoMoneda;
            int idPersona = 0;
            //string persona;
            //if (idPersona == 0)
            //{
            //     persona = "";
            //}
            int idInmobiliaria = Inmueble.Codigo;

            connection.Open();
            MySqlCommand InsertarInmueble = new MySqlCommand("INSERT INTO tInmueble(idTipoinmueble, txTipoTransaccion, idProvincia, idLocalidad, idBarrio, txCalle, txAltura, txLote, txSuperficieCubierta, txHabitaciones, txBano, txAgua, txAsfalto,  txBalcon, txClocas, txCocina, txComedor, txDescripcion, txGas, txJardin, txLiving, txLuz, txPatio, txQuincho, txTelefonoInmueble, txTerraza,idPersona,txValorInmueble, txTipoMoneda, idInmobiliaria)" + "VALUES ('" + tipoinmueble + "', '" + transaccion + "', '" + provincia + "','" + localidad + "', '" + barrio + "','" + calle + "','" + altura + "','" + lote + "','" + superficieCubierta + "','" + habitaciones + "','" + baño + "','" + agua + "','" + asfalto + "','" + balcon + "','" + clocas + "','" + cocina + "','" + comedor + "','" + descripcion + "','" + gas + "','" + jardin + "','" + living + "','" + luz + "','" + patio + "','" + quincho + "','" + telefonoInmueble + "','" + terraza + "','" + idPersona + "', '" + valorInmueble + "', '" + tipoMoneda + "', '" + idInmobiliaria + "')", connection);
            InsertarInmueble.ExecuteNonQuery();
            connection.Close();
            GuardarImagenes(Inmueble);
        }
        private void GuardarImagenes(DtoInmuebleInmobiliaria Inmueble)
        {
            int CodigoInmueble = BuscarCodigoInmueble(Inmueble.Codigo);
            if (Inmueble.Foto1 != null)
            {
                connection.Open();

                MySqlCommand InsertarImagenes1 = new MySqlCommand("INSERT INTO inmobiliaria.timagenes(Imagen, idInmueble)" + "VALUES ( ?image,  ?id)", connection);

                InsertarImagenes1.Parameters.Add("?image", MySqlDbType.Blob).Value = Inmueble.Foto1;
                InsertarImagenes1.Parameters.Add("?id", MySqlDbType.Int64).Value = CodigoInmueble;
                InsertarImagenes1.ExecuteNonQuery();
                connection.Close();
            }

            if (Inmueble.Foto2 != null)
            {
                connection.Open();

                MySqlCommand InsertarImagenes2 = new MySqlCommand("INSERT INTO inmobiliaria.timagenes(Imagen, idInmueble)" + "VALUES ( ?image,  ?id)", connection);

                InsertarImagenes2.Parameters.Add("?image", MySqlDbType.Blob).Value = Inmueble.Foto2;
                InsertarImagenes2.Parameters.Add("?id", MySqlDbType.Int64).Value = CodigoInmueble;
                InsertarImagenes2.ExecuteNonQuery();
                connection.Close();
            }

            if (Inmueble.Foto3 != null)
            {
                connection.Open();

                MySqlCommand InsertarImagenes3 = new MySqlCommand("INSERT INTO inmobiliaria.timagenes(Imagen, idInmueble)" + "VALUES ( ?image,  ?id)", connection);

                InsertarImagenes3.Parameters.Add("?image", MySqlDbType.Blob).Value = Inmueble.Foto3;
                InsertarImagenes3.Parameters.Add("?id", MySqlDbType.Int64).Value = CodigoInmueble;
                InsertarImagenes3.ExecuteNonQuery();
                connection.Close();
            }

            if (Inmueble.Foto4 != null)
            {
                connection.Open();

                MySqlCommand InsertarImagenes4 = new MySqlCommand("INSERT INTO inmobiliaria.timagenes(Imagen, idInmueble)" + "VALUES ( ?image,  ?id)", connection);

                InsertarImagenes4.Parameters.Add("?image", MySqlDbType.Blob).Value = Inmueble.Foto4;
                InsertarImagenes4.Parameters.Add("?id", MySqlDbType.Int64).Value = CodigoInmueble;
                InsertarImagenes4.ExecuteNonQuery();
                connection.Close();
            }

            if (Inmueble.Foto5 != null)
            {
                connection.Open();

                MySqlCommand InsertarImagenes5 = new MySqlCommand("INSERT INTO inmobiliaria.timagenes(Imagen, idInmueble)" + "VALUES ( ?image,  ?id)", connection);

                InsertarImagenes5.Parameters.Add("?image", MySqlDbType.Blob).Value = Inmueble.Foto5;
                InsertarImagenes5.Parameters.Add("?id", MySqlDbType.Int64).Value = CodigoInmueble;
                InsertarImagenes5.ExecuteNonQuery();
                connection.Close();
            }
        }
        public int BuscarCodigoInmueble(int CodigoInmobiliaria)
        {
            connection.Open();
            MySqlCommand cmd = new MySqlCommand();
            cmd.Connection = connection;
            cmd.CommandText = "select MAX(i.idInmueble) From tinmueble i right outer join tinmobiliarias p  on(p.idInmobiliaria = i.idInmobiliaria) where (p.idInmobiliaria) = '" + CodigoInmobiliaria + "'";
            Int32 inmueble = (Int32)cmd.ExecuteScalar();
            connection.Close();
            return inmueble;
        }

    }
}
